<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>相加等于数字n的完全平方数的最少数量</title>
</head>

<body>
  <script>

    function array(arr) {
      let sum = [0]
      //循环12个13
      for (let i = 1; i <= arr; i++) {
        // 循环1-12的的数组
        // 最坏的情况就是每次+1
        sum[i] = i
        console.log(sum)
        for (let j = 1; j * j <= i; j++) {//让j的平方都相乘让他小于i的值
          console.log(j)
          // 思路: sum[i] 表示的完全平方和的最少数量，sum[ - * ] + 1表示减去一个完全平方数的完全平方之后的数量加1就等于sum[i]，
          //只要在sum[i],dp[i - j * j] + 1中寻找一个较少的就是最后sum[i]的值。
          sum[i] = Math.min(sum[i], sum[i - j * j] + 1)//状态转义方程
        }

      }
      return sum[arr]
    };
    console.log(array(6))
  </script>
</body>

</html>